import java.util.ArrayList;

/**
 * <h1>Classe : Sommet</h1>
 * Classe permettant de modéliser un sommet d'un graphe.
 * Ce sommet peut posséder des connexions vers les autres sommets du graphe via ces arètes.
 * On peut manipuler ses arètes via les méthodes <b>ajouteArete</b> et <b>getAretes</b>
 */
public class Sommet {
	private String nom;
	private ArrayList<Arete> aretes;
	
	/**
	 * <h1>Constructeur : Sommet</h1>
	 * Permet d'instancier un sommet qui portera le nom donné en paramètre.
	 * Ce nom lui servira de référence, notamment pour les comparaisons.
	 * @param nom Le nom donné à ce sommet
	 */
	public Sommet(String nom){
		this.aretes = new ArrayList<>();
		this.nom = nom;
	}

	/**
	 * <h1>Méthode : toString</h1>
	 * Retourne la représentation du sommet c'est à dire son nom.
	 * @return nom Le nom du sommet
	 */
	@Override
	public String toString() {
		return nom;
	}
	
	/**
	 * <h1>Méthode : equals</h1>
	 * Permet de vérifier si deux sommets sont identiques.
	 * @param s Le sommet à tester
	 * @return <ul><li><b>Vrai</b> Si les deux sommets sont identiques (ont le même nom).</li>
	 * <li><b>Faux</b> Si les deux sommets sont différents.</li>
	 */
	public boolean equals(Sommet s){
		if(this.nom.equals(s.nom))
			return true;
					return false;
	}
	
	/**
	 * <h1>Méthode : ajouteArete</h1>
	 * Permet d'ajouter une arète entre ce sommet et  le sommet donné en paramètre.
	 * L'arète  sera orientée de ce sommet à celui donné en paramètre.
	 * @param destination Le sommet vers lequel on veut créer une nouvelle arète.
	 */
	public void ajouteArete(Sommet destination){
		this.aretes.add(new Arete(this, destination));
	}
	
	public ArrayList<Arete> getAretes(){
		return this.aretes;
	}
}
